\section{Ejercicio 10}

\subsection{Comparación con y sin compensación}
Para forzar la compensación de tickets en el algoritmo de lottery utilizamos el siguiente lote de tareas:

\begin{verbatim}
@0:
TaskConsola 3 10 200
*3 TaskCPU 200
\end{verbatim}

Elegimos tres tareas que utilizan la CPU (200 ticks) y una tarea interactiva de consola que se bloquea 3 veces 
por un itervalo de tiempo entre 10 y 200 ticks. La tarea de consola es la que fuerza la compensación de tickets 
debido a que la misma produce bloqueos que hacen que el algoritmo aplique la compensación.
Con este lote de tareas lo que se espera es que el algoritmo beneficie a la tarea interactiva minimizando 
el tiempo de respuesta de la misma.

Para tener las mismas condiciones de prueba ejecutamos los dos algoritmos con los mismos parametros:
\begin{verbatim}
número de cores = 1
switch_cost     = 5
migrate_cost    = 0
quantum         = 30
semilla         = 9673
\end{verbatim}

Como se puede observar en la figura \ref{ej10_CC} el algoritmo con compensación de tickets beneficia a 
a la tarea \textbf{TaskConsola} por sobre las otras a la hora de elegir una, haciendo que la misma termine su 
ejecución entre 40 y 50 ticks antes que la versión sin compensación. Esto tiene bastante lógica ya que la tarea TaskConsola posee más 
tickets que el resto de las tareas por lo que posee mayor probabilidad de ser elegida.

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej10-SchedLotteryCC.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedLotteryConCompensacion - 1 Core - Penalidad 5 por Context Switch}
  \label{ej10_CC}
\end{figure}

Vemos que en la figura \ref{ej10_SC} el sorteo no favorece a la tarea interativa ya que la misma sale sorteada
recien tres veces después. Esto hace que la tarea interactiva posea un tiempo de respuesta mayor a la versión
con compensación de tickets.

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej10-SchedLotterySC.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedLotterySinCompensacion - 1 Core - Penalidad 5 por Context Switch}
  \label{ej10_SC}
\end{figure}


Esta estrategia minimiza el tiempo de respuesta en los sistemas interactivos. El tiempo de respuesta es el tiempo
que transcurre entre que un usuario ingresa un comando interactivo hasta el momento en que el comando despliega
su primer resultado. No se considera el tiempo de despliegue del resultado completo. 
En un sistema interactivo es mucho más molesto que un comando no dé ninguna señal de avance a que un comnado 
sea lento para desplegar sus resultados. Por esta razón el tiempo de respuesta sólo considera el tiempo que 
demora un comando en dar su primera señal de avance.

Como conclusión podemos ver que el algoritmo con compensación intenta beneficiar a aquellas tareas
interactivas minimizando el tiempo de respuesta de las mismas como para dar una mejor experiencia al usuario.
Es decir este tipo de algoritmo tiene una mejora sustancial si la mayoria de los procesos que se van a 
ejecutar son procesos interactivos.
